{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Modeling and Simulation in Python\n",
    "\n",
    "Case study: Throwing Axe\n",
    "\n",
    "Copyright 2017 Allen Downey\n",
    "\n",
    "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Configure Jupyter so figures appear in the notebook\n",
    "%matplotlib inline\n",
    "\n",
    "# Configure Jupyter to display the assigned value after an assignment\n",
    "%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n",
    "\n",
    "# import functions from the modsim.py module\n",
    "from modsim import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Throwing axe"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Our favorite event at Lumberjack Competitions is axe throwing.  The axes used for this event typically weigh 1.5 to 2 kg, with handles roughly 0.7 m long.  They are thrown overhead at a target typically 6 m away and 1.5 m off the ground.  Normally, the axe makes one full rotation in the air to hit the target blade first, with the handle close to vertical.\n",
    "\n",
    "![Diagram of throwing axe](diagrams/throwingaxe1.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's a version of `make_system` that sets the initial conditions.\n",
    "\n",
    "The state variables are x, y, theta, vx, vy, omega, where theta is the orientation (angle) of the axe in radians and omega is the angular velocity in radians per second.\n",
    "\n",
    "I chose initial conditions based on videos of axe throwing."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "m = UNITS.meter\n",
    "s = UNITS.second\n",
    "kg = UNITS.kilogram\n",
    "radian = UNITS.radian\n",
    "\n",
    "def make_system():\n",
    "    \"\"\"Makes a System object for the given conditions.\n",
    "    \n",
    "    returns: System with init, ...\n",
    "    \"\"\"\n",
    "    P = Vector(0, 2) * m\n",
    "    V = Vector(8, 4) * m/s\n",
    "    theta = 2 * radian\n",
    "    omega = -7 * radian/s\n",
    "    \n",
    "    init = State(P=P, V=V, theta=theta, omega=omega)\n",
    "\n",
    "    t_end = 1.0 * s\n",
    "    \n",
    "    return System(init=init, t_end=t_end,\n",
    "                  g = 9.8 * m/s**2,\n",
    "                  mass = 1.5 * kg,\n",
    "                  length = 0.7 * m)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's make a `System`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>init</th>\n",
       "      <td>P                          [0.0 meter, 2.0 met...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t_end</th>\n",
       "      <td>1.0 second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>g</th>\n",
       "      <td>9.8 meter / second ** 2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mass</th>\n",
       "      <td>1.5 kilogram</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>length</th>\n",
       "      <td>0.7 meter</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "init      P                          [0.0 meter, 2.0 met...\n",
       "t_end                                            1.0 second\n",
       "g                                   9.8 meter / second ** 2\n",
       "mass                                           1.5 kilogram\n",
       "length                                            0.7 meter\n",
       "dtype: object"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "system = make_system()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>[0.0 meter, 2.0 meter]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>V</th>\n",
       "      <td>[8.0 meter / second, 4.0 meter / second]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>theta</th>\n",
       "      <td>2 radian</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>omega</th>\n",
       "      <td>-7.0 radian / second</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "P                          [0.0 meter, 2.0 meter]\n",
       "V        [8.0 meter / second, 4.0 meter / second]\n",
       "theta                                    2 radian\n",
       "omega                        -7.0 radian / second\n",
       "dtype: object"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "system.init"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As a simple starting place, I ignore drag, so `vx` and `omega` are constant, and `ay` is just `-g`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def slope_func(state, t, system):\n",
    "    \"\"\"Computes derivatives of the state variables.\n",
    "    \n",
    "    state: State (x, y, x velocity, y velocity)\n",
    "    t: time\n",
    "    system: System object with length0, m, k\n",
    "    \n",
    "    returns: sequence (vx, vy, ax, ay)\n",
    "    \"\"\"\n",
    "    P, V, theta, omega = state\n",
    "\n",
    "    A = Vector(0, -system.g)\n",
    "    alpha = 0 * radian / s**2\n",
    "\n",
    "    return V, A, omega, alpha"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As always, let's test the slope function with the initial conditions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([8., 4.]) <Unit('meter / second')>,\n",
       " array([ 0. , -9.8]) <Unit('meter / second ** 2')>,\n",
       " -7.0 <Unit('radian / second')>,\n",
       " 0.0 <Unit('radian / second ** 2')>)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "slope_func(system.init, 0, system)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And then run the simulation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>success</th>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>message</th>\n",
       "      <td>The solver successfully reached the end of the...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "success                                                 True\n",
       "message    The solver successfully reached the end of the...\n",
       "dtype: object"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results, details = run_ode_solver(system, slope_func)\n",
    "details"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>P</th>\n",
       "      <th>V</th>\n",
       "      <th>theta</th>\n",
       "      <th>omega</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.96</th>\n",
       "      <td>[7.680000000000005 meter, 1.3241600000000022 m...</td>\n",
       "      <td>[8.0 meter / second, -5.407999999999994 meter ...</td>\n",
       "      <td>-4.7200000000000015 radian</td>\n",
       "      <td>-7.0 radian / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.97</th>\n",
       "      <td>[7.760000000000005 meter, 1.2695900000000022 m...</td>\n",
       "      <td>[8.0 meter / second, -5.505999999999994 meter ...</td>\n",
       "      <td>-4.790000000000002 radian</td>\n",
       "      <td>-7.0 radian / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.98</th>\n",
       "      <td>[7.840000000000005 meter, 1.2140400000000022 m...</td>\n",
       "      <td>[8.0 meter / second, -5.603999999999994 meter ...</td>\n",
       "      <td>-4.860000000000002 radian</td>\n",
       "      <td>-7.0 radian / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.99</th>\n",
       "      <td>[7.920000000000005 meter, 1.1575100000000023 m...</td>\n",
       "      <td>[8.0 meter / second, -5.701999999999994 meter ...</td>\n",
       "      <td>-4.930000000000002 radian</td>\n",
       "      <td>-7.0 radian / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1.00</th>\n",
       "      <td>[8.000000000000005 meter, 1.1000000000000023 m...</td>\n",
       "      <td>[8.0 meter / second, -5.799999999999994 meter ...</td>\n",
       "      <td>-5.000000000000003 radian</td>\n",
       "      <td>-7.0 radian / second</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                      P  \\\n",
       "0.96  [7.680000000000005 meter, 1.3241600000000022 m...   \n",
       "0.97  [7.760000000000005 meter, 1.2695900000000022 m...   \n",
       "0.98  [7.840000000000005 meter, 1.2140400000000022 m...   \n",
       "0.99  [7.920000000000005 meter, 1.1575100000000023 m...   \n",
       "1.00  [8.000000000000005 meter, 1.1000000000000023 m...   \n",
       "\n",
       "                                                      V  \\\n",
       "0.96  [8.0 meter / second, -5.407999999999994 meter ...   \n",
       "0.97  [8.0 meter / second, -5.505999999999994 meter ...   \n",
       "0.98  [8.0 meter / second, -5.603999999999994 meter ...   \n",
       "0.99  [8.0 meter / second, -5.701999999999994 meter ...   \n",
       "1.00  [8.0 meter / second, -5.799999999999994 meter ...   \n",
       "\n",
       "                           theta                 omega  \n",
       "0.96  -4.7200000000000015 radian  -7.0 radian / second  \n",
       "0.97   -4.790000000000002 radian  -7.0 radian / second  \n",
       "0.98   -4.860000000000002 radian  -7.0 radian / second  \n",
       "0.99   -4.930000000000002 radian  -7.0 radian / second  \n",
       "1.00   -5.000000000000003 radian  -7.0 radian / second  "
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results.tail()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Visualizing the results"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The simplest way to visualize the results is to plot the state variables as a function of time."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_position(P):\n",
    "    x = P.extract('x')\n",
    "    y = P.extract('y')\n",
    "    plot(x, label='x')\n",
    "    plot(y, label='y')\n",
    "\n",
    "    decorate(xlabel='Time (s)',\n",
    "             ylabel='Position (m)')\n",
    "    \n",
    "plot_position(results.P)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can plot the velocities the same way."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deXxU9b3/8dfMZN8mCYvsO3zZ94RdEXCBRCzWWq21WttqW6Xerte2tz9bW6+9t72tt9pWbXvb2qLWupMgsgiICCTs+5edyCZbMtlDWH5/nGBTCnGAzJyT5P18PPIgc+bMzJshzCffcz7n+/WdPXsWERERr/G7HUBERORCVKBERMSTVKBERMSTVKBERMSTYtwO0BiMMfFAFnAIOO1yHBERCV8AaA8UWmtr6t/RLAoUTnFa6nYIERG5bBOA9+pvaC4F6hDArFmzaNeundtZREQkTIcPH+bOO++Eus/x+ppLgToN0K5dOzp16uR2FhERuXT/cnpGTRIiIuJJKlAiIuJJKlAiIuJJKlAiIuJJnmmSMMaMBn4FGOAo8FNr7e/dTSUiIm7xxAjKGOMH3gB+Za0NAncATxljhribTERE3OKJAgVkAG0BnzHGB5wFTgEnXU0lIiKu8cQhPmvtcWPMU8CfgT/iTH3xkLV2a7Qy/Oj3K1i19cNovZyISLMwst9VPPLF0RF5bk+MoOoO8VUDnwESgYnAI8aY693MJSIi7vHECAq4BRhnrf123e0lxpg/APcD86IRIFK/AYiIyOXxxAgK6AzEn7ftFFDrQhYREfEAr4yg5gGPG2PuA34HDAe+BHzR1VQiIuIaT4ygrLWbcQ7z3Q+UAM8DD1tr33A1mIiIuMYrIyistXOAOW7nEBERb/DECEpEROR8KlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJMW4HOMcY0x74LXAtUA08a639gbupRETELV4aQb0BHAKuAkYDdxtjPuNuJBERcYsnRlDGmFFAD2CctbYW2GOMmQhUuRpMRERc45UR1AhgI/BDY8wBY8wuYIa19pDLuURExCVeKVCZwASgFmckdQvwLR3iExFpuTxxiA+oAUqttT+su73eGPN7nEL1vGupRETENV4ZQW0DkowxcfW2eaV4ioiIC7xSoOYDR4H/McbEGWMGAV8AXnA3loiIuMUTBcpaWw1cg3P+6RAwF/hva+0rrgYTERHXeOYwmrV2N5Djdg4REfEGT4ygREREzqcCJSIinqQCJSIinqQCJSIinqQCJSIinqQCJSIinqQCJSIinqQCJSIinqQCJSIinqQCJSIinqQCJSIinqQCJSIinqQCJSIinqQCJSIinqQCJSIinqQCJSIinqQCJSIinqQCJSIinqQCJSIinqQCJSIinuS5AmWMSTfGFBlj7nE7i4iIuMdzBQp4GujodggREXGXpwqUMeZuIA3YGM3XPVNbQ+nquZw8si+aLysiIg2IcTvAOcaY7sAjwFhgbjRfu2Lr+xyb+zsAErsPJpiVS2KvYfh8nqrfIiItiicKlDEmAPwV+Ja19rAxJqqvn9xvLDWHdlO2/h2q9mygas8GYjPbk5aVQ+rgifjjEqOaR0REwixQxphBwFRgJNAWOA0cBgqBPGvtzivM8QPAWmtfvcLnuSz+2Hha3/AFMq65nbJ1CyktzKf2xCGOv/17ihc/T+qwKaSNnEpssK0b8UREWiTf2bNnL3qnMeZq4Ec4h90KgC3AcSAAtAaGAIOBJcCPrbXvXk4IY8w2oANwpm5TKlAD/Mla+9UwHt8N2LNw4UI6dep0ORH+ydkzp6mwBYQK8qjZv83Z6POTbEYRzM4lvpPB5/Nd8euIiLR0+/fvZ/LkyQDdrbV769930RGUMeb/gAHAU8AMa23JRfZLA+4AnjDGbLDW3nOpAa21fc97znXAE9baP13qczUGnz9ASr8xpPQbQ/XBnZQW5lO+ZRkV25ZTsW058e17EczOJbnfaHyBWDciiog0ew0d4su31t77cU9grS0FngGeMcbc2mjJPCKhQy8Sbn6IzEl3Ubp6LqVr5lFzaCdH3niCwMJM0kbeSNqw6wgkpbkdVUSkWWnwEF9T0diH+BpypraG8k3vEirIo/bYfgB8MXGkDLyaYHYOcW26RPT1RUSak8s6xFefMSYJ+Hfgr9baHcaYZ4A7cc5L3WmtPdS4kb3LHxtP2rDrSB06hao96wkV5FO1aw1l6xZQtm4BiT2GOG3qPYeqTV1E5AqE22b+v8Ak4CVjzM3A3cBM4BPAr4BPRSaed/l8PpJ6DCWpx1BOHj9AaUE+ZRsXU7V7PVW71xPbqgPBrBxSBk3EH5fgdlwRkSYn3F/xbwbusNZuxilG8621vwO+DVwfqXBNRVyrjrSeeh9dZj5D5qS7CKS2ovb4QY7N/R1FT97H8Xf+wqnSY27HFBFpUsIdQSUCHxpj/MANwA/rtp/FuSZKgEBiKuljPkEwO5cKu9JpUz+wndDy1wmteJPkfmMIZueS0LGP21FFRDwv3AJViHMO6iiQAbxmjOkA/BhYEaFsTZYvEENK/3Gk9B9H9YHthAryqNi6nIoty6jYsoz4Dr2dNvW+o/EFPDGZh4iI54T76fgg8DzQDfiqtfagMeZJwAAzIpStWUjo2IeEGd/g1ORjdW3q86k5uIMjr/+SQGomwZFTSR12HYHEVLejioh4SkMX6o4FVlhrz1hrtwBDz9vle9basoima0Zi0lqTee1nSR936z/a1I8f4MSiWRQv/TspgycSzMohrnVk2+RFRJqKhkZQPweMMWYpMA+YV3/OPRWny+OPSyBt+PWkDptC1e71hApmU7V7PWVr5lG2Zh6JPYYRzM4hscdQTackIi3aRQuUtXZs3TRGk4HrgG/UzTo+H6dgLbTWFkcnZvPj8/lJ6jmMpJ7DOHn0A0KFcyjfuJiq3Wup2r2W2Nad6trUr8EfG+92XBGRqLukmSTq1my6HqdgTQR24bSc/0dE0oWfqxtRmkkikk5XllG6dj6lq97idPkJAPyJKaQNu560ETcSk9bK5YQiIo3rimeSOMdau4d/zLvnB7JwipU0gkBSKhnjbiF99HQqti532tQP7aTk/VcpWfEGKf3GkpadS0KHXm5HFRGJuLALlDFmIs7s5ucfb6pszEBS16Y+cALJA8Y711EV5FGxbQXlm5dSvnkp8Z2M06ZuRuHzB9yOKyISEeHOxfcEztRGRUD1eXefBX7RyLkEZzqlhE6GhE6GU6GjhFa9Rdm6BdTstxzZb4lJa01a1jRSh0wmkJjidlwRkUYV7gjqc8C91to/RzKMXFxMsA2tJn+OjAmfomzDYkoL51B74iAnFj5H8bsvkTp4ImlZOcS16uB2VBGRRhFugarEmblcXOaPSyQ4cippI26gatdaQgV5VO3Z4FwEvHouSb1GkJadQ2K3wWpTF5EmLdwC9RPg58aYB+saJcRlPp+fpF4jSOo1gpNHiggV5lO+cQmVO1dTuXM1sW26EMzOIWXABLWpi0iTFG6B2gr8J7DTGPMvd1prdabeRXFtu9Am5ytkTvyM06a+ei61R4s4lv9bTiya9Y829dQMt6OKiIQt3AL1LM6ksH9EXXueFUgOkjH+VtLH3Ez51uWEVuZx8vAuSpa9TMny10npP5Zgdi7x7Xu6HVVE5GOFW6A6A1OttbsjGUYahy8QS+rAq0kZMIGa/ducNnVbQPmmdynf9C4JnfuRlp1Dcp9stamLiGeFW6DmA1cDKlBNiM/nI6FzPxI696O25Ailq96idN0Cqj/YSvUHW4kJtiUtayppQybjT0h2O66IyD8Jt0CtBJ4yxnwS2AnU1r/TWvudKw1ijLkO+CnQGzgC/Mxa+8yVPq84YtPb0mrK3WRMuI2yDYsIFeZzqvgwJxb8meJ3/0bq4EkEs6YRm9ne7agiIkD4Beo6nEULU/jXZTfCn8zvIowxnYFXgLuBN4ARwNvGmL3W2rev9PnlH/zxiQSzppE24gYqd64hVJhP9d6NlK6aQ+mqt0jqPcJZ9bfrQLWpi4irwipQ1tprI5yjG/C8tfa1utuFxpjFwDhABSoCfP4AyX2ySO6TRc2HeyktzKd801Iqd6yicscq4tp2daZTGjAef0yc23FFpAXyX+wOY8wjxpjEcJ/IGJNqjHn0ckJYa5daa79c77kygQnA2st5Prk08Vd1o03uA3SZ+QwZV3+aQHI6J4/s42jeryl68n5OLHmRU+VaWUVEoquhEVQI2GyMeRl41Vq74vwdjDE+YCTwWeAW4JdXGsgYEwTexDnv9caVPp+EL5AcJGPCbaSPmUH5lmWECvI4+eEeSt77OyXvv0bKgPEEs3OIb9fD7agi0gI0tGDhE3XF6TvAPGPMKZwLdo8BPqANzuzmPuBPwDhrbdGVhDHG9MEpSluAO621Z67k+eTy+GJiSR08kZRB11BdtIVQQR6V2wsp37iY8o2LSegygGB2Dkm9R6pNXUQipsFzUNba/cDXjDHfxVmgcARwFXAGZ4TzI2CRtbbmSoMYY67GKU5PA9+z1l5x84VcGZ/PR2LXASR2HUBt8WFChXMoW/8O1UWbqS7aTEz6VQSzppE6ZBL++CS344pIM3NJK+pGijGmJ875pu9ba5+8jMd3oxmsqNsUnKmppGz9O4QK53Cq5EMAfHGJpA6dTHDkVGIz2rmcUESakkZbUTeCHgBSgceNMY/X2/5ra+2/u5RJLsAfn0QwO5e0kVOp3LGKUEE+1UWbKS3Io7Qgn6Q+WU6bepf+alMXkSviiQJlrf0G8A23c0j4fP4AyWYUyWYUNYd3O7Opb3qPyu0FVG4vIO6q7gSzc0npPw5fTKzbcUWkCbpom7lIuOLb9aDtTTPpMvNp0sd/Cn9SGic/3MPR2U9S9NSXKV76EqcrQm7HFJEmJqwCVXeOR6RBMSkZZF5zO11mPkOb3AeIa9uV0xUlFL/7N4qevJ8js39NzYd73Y4pIk1EuIf4dhpjVgB/Bf5urT0ewUzSxPlj4kgdMomUwddSvW+T06a+YzXlG96hfMM7JHQdSDA7l6TeI/D5NIgXkQsLt0D1AD4DfAX4X2PMPGAW8Ia1tipS4aRp8/l8JHYbRGK3QdSeOERoVV2b+r5NVO/bRExGO4JZOaQOuRZ/XNiTlohIC3HJbebGmIHA7cBNQHfgNeAv1toFjR8v7EzdUJt5k3CmuoLS9QspLZzDqdBRwOkMTB06hbSRU4lNb+tyQhGJpsZuM98P7MJZG6o3zuzm1xljyoB7rLXLryyuNGf+hGTSR00nmJVD5fZCQgV5VH+wldDKNwkV5JFssp1Vfzv1VZu6SAsXVoEyxiQDN+OMnK4HPgSeB/7DWrvZGOMHfgP8DegSoazSjPj8AZL7jia572hqDu0iVJBH+Zb3qdi2goptK4hr15Ngdg4p/cfiC6hNXaQlCncEdQQ4CbwK3GitXVz/TmvtmbrzUhMaN560BPHte9L25ofInPQ5StfMpXTNPE4e3sXRN3/FiYXPkTZyKmnDryeQlOZ2VBGJonAL1D3Amxeac88Y09Zae8Ra+ypOARO5LDGpGWRecwfpY2+hfPNSQgX51B4tonjJC5Qse4WUgVcTzMohrq0G6SItQbgF6kWgHXC0/kZjTBecmcdTGjmXtGD+2HjShk4hdchkqvZuoLQgn8qdqylbt4CydQtI7D6EYHYOiT2HqU1dpBm7aIEyxtwBzKi76QN+b4w5fwTVFTgRoWzSwvl8PpK6DyGp+xBOHj9I6ao5lK1fRNWe9VTtWU9sZgfSsnJIHXyN2tRFmqGGfv2cD5QDFXW3q+q+P/dVjrPkxiciGVAEIK5VB1rf8EW6zHyGzEl3EUhrTe2Jgxx/+3cUPXk/xxc+91Hbuog0Dw0tWHgMuBfAGLMX+Jm1tjI6sUQuLJCYQvqYTxAcdRMVdiWhgjxq9ltCK94gtHI2yX1HOW3qHY3a1EWauIYO8U0D5ltra4FCYKIx5oL7WmvnRCaeyIX5/AFS+o0lpd9Yqg/soLQwn/Kt71OxdTkVW5cT36E3wewckvuOwRfwxKT9InKJGvqfm4fTGHGk7vuLOQto3W9xTULH3iR0/DcyJ91F6eq5lK6dR83BHRx5/QkCqc+RNmIqacOuI5CU6nZUEbkEDR3i81/oexGviklrRea1d5I+/lbKNy4hVJhP7bH9FC+eRcl7fydl0DVOm3qbzm5HFZEwhH3swxhzL1BqrX257vZLwGxr7V8iFU7kcvhj40kbfj2pw66jas96QivzqNq9lrK18ylbO5/EHkMJZueS2GOI2tRFPCzcqY6+D3wTZzbzczYCTxhjWllrn4hEOJEr4fP5SOoxlKQeQzl5bD+lhXMo27CIqt3rqNq9jthWHQlm5ZAyeCL+2Hi344rIecL99fF+4HZr7d/ObbDW/hj4LPBQJIKJNKa41p1oPfU+unztWTKv/SyB1FbUHj/AsbnPUvSr+zj+zl84VaplzkS8JNxDfBnAvgts3wVc1XhxRCIrkJhK+tgZ/9ymfmA7oeWvE1rxJsn9xhDMziWhYx+3o4q0eOEWqBXAw8aYL1lrTwEYYwI4h/0KGyOIMWYI8DQwGGcpj3uttY3y3CLn8wViSOk/jpT+46g+sJ1QQZ7Tor5lGRVblhHfsQ/B7FySzSi1qYu4JNz/ed8CFgJFxpgNOK3lg+oeP/VKQxhj4oA3gCeAq4FPAvOMMV2ttaVX+vwiDUno2IeEGd/g1ORjhFa9RdnaBdQc2M6R135BILUVwZFTSR02hUCi2tRFoimsc1DW2vWAAR4DdgJbgZ8Ava21axshx0Qg1lr7hLW21lr7IrAZ+HQjPLdIWGLSWtNq0l10mfkMrW+8j9hWHThddpwTi/5K0ZP3c+ytZzl5bL/bMUVajLCPXVhrjxtj3gY+wCls26y1ZY2Uoz9O0atvG84oTSSq/HEJpI24gdTh11G1ax2hwjyqdq+ndM3blK55m8Sew5w29e5DNJ2SSASF22aeAvwBuBWoxZndPMYYMx/4pLW2oqHHhyEFOH+ev0og6QqfV+Sy+Xx+knoNJ6nXcE4eLSJUOIfyjUuo2rWWql1riW3diWB2LikDr1abukgEhNtm/guc0cwYIBFIqPu+A/BfjZCjou5560vCmTFdxHVxbbrQZtqX6TLzGTImfoZASia1x/ZzbM7TFD15PycWzVKbukgjC/cQ3y3ADGttQb1tBcaYB4CXgQevMMcW4OvnbesLPHeFzyvSqAJJaWSM+yTpo6dTsXUFoYLZ1BzaRcn7r1Ky4g1S+o0lLTuXhA693I4q0uSFW6D8wLELbD9B46ymuwjwGWO+DjyF08U3GHitEZ5bpNH5ArGkDJxA8oDxznIfBXlU2JWUb15K+ealxHcyBLNvItlk4/NrLmWRyxFugXoX+KEx5i5r7UkAY0w88Aiw9EpDWGtPGmOm4lwH9SiwF/iEtVYr0Imn+Xw+Ejr3JaFzX2pDRyg916a+33JkvyUmrTVpWdNIHTqFQEKy23FFmpRLuQ7qPeADY8y6um1DgGrgxsYIYq3dBIxvjOcScUNssC2tJt9NxoTbKNuwmNLCfGpPHOLEwucofvclUodcSzBrGrGZHdyOKtIkhFWgrLU7jTH9gDtxWsKrgL8Ds6y1VRHMJ9Lk+OMSCY6cStqIG6jcuYbSwnyq9mygdNVblK6aS1Kv4c50St0GqU1dpAGXch1UMc75IREJg8/nJ7n3SJJ7j+TkkX2ECvIp3/QulTtXU7lzNbFtuhDMznHa1GPi3I4r4jkNLfleiDOl0cey1mY3WiKRZiiubVfa5H6VzGvvpHTtfEpXvUXt0SKO5f+WE4tmkTb8etKG30hMaobbUUU84+OWfBeRRhRIDpIx/lbSx9xM+ZZlhAryOXl4NyXvvUzJ+6+TMmAcwaxc4tv3cDuqiOsaWvL9R9EMItKS+AKxpA6aSMrAa6jZv42SlbOp3F5I+cYllG9cQkLnfgSzc0nqk6U2dWmxLmXJ99uAbwO9geHAV4HD1tqfRyibSLPntKn3o13nftSWfOg0UqxbSPUHW6n+YCsxwbakZU0jbcgk/GpTlxYmrKmOjDH3AL8BXgXOnc3dBvw/Y8zDkYkm0rLEpl9Fqyn30HXms7S6/gvEZLTjVOgIJxb8iX1P3sexeX+gtviw2zFFoibcufi+CXzFWvs4cBrAWvt74PM4y8GLSCPxxycSzJpG5y//iqs+9TAJXQdy9mQ1pYVz+OA3D3L4pZ9StXcjZ8+G1cMk0mSFe4ivJ7DqAtvXAe0aL46InOPzB0juk0VynyxqPtxLqCCP8s1LqdxRSOWOQuLadiOYnUPygPFqU5dmKdwRlAWmXGD7bTiH+kQkguKv6kbbmx6ky4PPkDHh0wSSg5w8spejeb/mg6e+zIl3/8ap8hK3Y4o0qnBHUN8DXjbGjKx7zJeNMb2AXJw1okQkCmJS0sm4+jbSx86gfPNSp039yF5Klr5EyfuvkjJgvNOm3q6721FFrli4Ux29ZYzJxuni2wRch7MC7mhr7ZoI5hORC/DFxJI6ZBIpg6+lumgLoYI8p019w2LKNywmoesAglm5JPUeoTZ1abIamkliGjDXWnsGwFq7GbgnSrlEJAw+n4/ErgNI7DqA2uLDhArnULZ+IdX7NlO9bzMx6VcRzJpG6pDJ+OPPXxNUxNsaOgf1BnDQGPNLY8zQaAUSkcsTm9GO1tffS9eZz5I55R5i0ttyquRDjs//I/t+9SWOzf8jtSUfuh1TJGwNHeLrCNxe9/WQMWYz8GfgeWvtwWiEE5FL509IJn3UTQSzplG5YxWhgnyqizZTWpBHaeEckvpkEczOIaFzf82mLp7mC+daCmNMN+AOnGLVH2cF3OeAV7yw3EZdvj0LFy6kU6dObscR8ZyaQ7sJFeZTvvk9OHMKgLiruhPMziWl/zh8MbEuJ5SWav/+/UyePBmgu7V2b/37wipQ9Rlj+gOfAW4BOuEUqc83TtTLowIlEp5T5cWUrp5L6Zp5nKksBSCQnE7aiBtJG349geSgywmlpWmoQIV7HdRHrLVbgJ8DjwM7gLsaIaOIREFMSgaZ19xBl5nP0Cb3AeLaduF0RQnF775I0ZP3czTv15w8ss/tmCLApU0WGwQ+gXNx7mRgNzALZyQlIk2IPybuH23q+zY5beo7VlO2/h3K1r9DYrdBpGXnktRrOD7fJf8eK9IoGixQ9YrSp3BmkigFXgR+aK0tbMwgxpiHgIeAVjgzV3zTWru0MV9DRP6Zz+cjsdsgErsNovbEwbo29UVU7d1I1d6NxGS0I5iVQ+qQa/HHqU1doquh66DycUZKZ4DZODNGzLXWnmrsEMaYW4Dv4FwAvA24G8gzxvSy1h5t7NcTkX8Vm9mB1jd8kYxr7qBs3UJKV83hVPFhjs/7A8VLXiB16BTSRk4lNr2t21GlhWhoBJUCPAD83VpbGuEc7YH/rDu/BfBHY8z/AIOAdyL82iJSTyAhmfTR0wlm51CxvYDSgnyqP9hKaOWbhArySDajCGbnEt/JqE1dIqqhFXWvacwXMsbEAZkXuOustfbX5+17NU6B3NyYGUQkfD5/gJS+Y0jpO4aagzudNvUty6jYtpyKbcuJb9+TtOxcUvqNwRdQm7o0vrCbJBrBWJzrp853un4OY8xA4G/Af1hrddm7iAfEd+hF25sfInPSXZSufpvSNW9Tc2gXR9/4X04sfO4fbepJaW5HlWYkagXKWrsYaPB4gDEmF/gL8FNr7X9HI5eIhC8mNZPMiXeQPu4WyjctJVSYR+3RDyhe8gIly14hZeDVBLNziGvTxe2o0gxEcwTVoLouvp8A91hrX3E7j4hcnD82nrRhU0gdOpmqPRsoLcyncudqytYtoGzdAhK7DyGYnUNiz2FqU5fL5okCZYy5DfhPYJK1dqXbeUQkPD6fj6QeQ0jqMYSTxw9QWjiHsg2LqNqznqo964lt1YG0kTmkDp6IPy7B7bjSxHiiQAEPA/HAQmNM/e23W2vz3IkkIpcirlVHWt/4pbo29QWEVr1F7fGDHH/7dxQveZ7UYdcRHHEjMcE2bkeVJsITBcpaO9ztDCLSOAKJKaSP+QTBUTdRsW0FoYJ8ag5YQstfJ7TiTZL7jiaYnUtCJ/PxTyYtmicKlIg0Pz5/gJT+40jpP47qA9sJFeRRsW0FFVvfp2Lr+8R36E0wO4fkvmPwBfRRJP9KPxUiEnEJHfuQMOMbnCo9TunqtyhdM5+agzs48voTBFKfIzhyKqlDryOQlOp2VPEQFSgRiZqYtFZkXvtZ0sd/ivKNSwgV5FF7/AAnFs2ieOnfSRk00WlTb61lc0QFSkRc4I+NJ2349aQOm0LV7vWECvKo2r2OsrXzKFs7j8QeQwlm55LYY6imU2rBVKBExDU+n5+knsNI6jmMk8f2O9MpbVhM1e51VO1eR2zrTgSzckgZdA3+2Hi340qU6Qo6EfGEuNadaDP1frp87Vkyr72TQGomtcf2c+ytZyh68j5OLJrFqdLjbseUKNIISkQ8JZCYSvrYWwiOmk7FtuVOm/rBHZS8/yolK94gud8Yglm5JHTs7XZUiTAVKBHxJF8ghpQBE0gZMOEfbepbl1Ox+T0qNr9HfEdT16Y+Gp8/4HZciQAVKBHxvI/a1CcdJbR6LmVr51NzwHLkNUsgrXVdm/oUAokpbkeVRqQCJSJNRkywDa0m3UXG+E9RtmExpYX51J44yIl3/kLx0pdIHXwtaVnTiGvV0e2o0ghUoESkyfHHJRAceSNpI66natc6p019z3pKV8+ldPVcEnsOd9rUuw9Wm3oTpgIlIk2Wz+cnqddwknoN5+TRIkIF+ZRvepeqXWuo2rWG2DadCWblkjJwgtrUmyC1mYtIsxDXpgttcr5Cl5nPkHHNHQRSMqg9+gHH5vyWoifv58Ti5zlVdsLtmHIJNIISkWYlkJRGxvhbSR9zMxVbVxAqmE3NoV2ULHuFkuWvk9J/HMGsHOI79HI7qnwMFSgRaZZ8gZoHqFYAABJ7SURBVFhSBk4gecB4avZbp03drqR807uUb3qXhM79SMvOIblPttrUPUoFSkSaNZ/PR0LnviR07kttyRFKV79F2doFVH+wleoPthITbEPayGmkDp1MICHZ7bhSjwqUiLQYseltaTX5bjLG30bZhkWECvM5VXyYEwv/TPG7fyN1yLUEs6YRm9nB7aiCCpSItED++ESCWdNIG3kjlTvXECrIo3rvRkpXvUXpqrkk9R7hrPrbdaDa1F2kAiUiLZbP5ye590iSe4+k5sO9lBbmU75pKZU7VlG5YxVxbbuQdq5NPSbO7bgtjtrMRUSA+Ku60Sb3AadN/epPE0hO5+SRIo7l/8ZpU1/yAqfKit2O2aJ4bgRljBkFvAf0ttbudTmOiLQwgeQgGRNuI33MDMq3LiO0Mo+TH+6h5L2XKXn/dVIGjCOYlUt8+x5uR232PDWCMsakAM/hwcIZDd/85jd57LHHPrp9+vRpxo4dS9++fZk5c+ZH226//XZ+/OMfuxVTpEXwxcSSOmgiHb/wM9rf9ShJZhScOU35xiUc+L9vc/AvP6Bi20rOnjntdtRmy2uF4EngVeDhSL7Ij36/glVbP4zkS3xkZL+reOSLo8Pad8aMGTz88MM8/PDDBAIBli1bRkJCAgsXLmT69OksWLCAHTt2UF5ezne+850IJxcRcNrUE7sMILHLAGqLDxNa9RZl6xZSXbSF6qItxKS3JZiVQ+qQSfjjk9yO26xErUAZY+KAzAvcddZa+6Ex5lagJ/BNIlygvGrs2LH4/X5WrlzJ2LFjmT17NjfddBMdO3bk+9//Po888ghVVVW88MILxMdrXjGRaIvNaEfr6z5P5tWfpmz9O4QK53Cq5EOOz/8jJ5a8SOqQSU6bekY7t6M2C9EcQY0FFl1g+2ljTFfgZ8C1wJlIBwl3RBNtfr+f6dOnM3v2bIYNG8aCBQt49dVXAZg2bRo//elP6dOnD8YYl5OKtGz++CSC2bmkjZxK5Y7VhArzqN63mdLCfEoL55DUZyTB7JtI6NJfbepXIGoFylq7GPiXfyljjA9YADxird1rjEmPViYvmjFjBrfffjujR4+mT58+dO/eHYCf//znGGM4ePAgL774IrfffrvLSUXE5w+QbLJJNtnUHN5DqDCP8s3vUbm9kMrthcRd1Z1gdg4p/cfji4l1O26T44Umic7AOOBXxpgSYF/d9g3GmM+4F8sdPXv2pGvXrjzxxBPcfPPNACxfvpxXXnmFxx57jEcffZT/+q//oqioyOWkIlJffLvutL1pJl0efIaMCZ8mkBzk5Id7ODr7KYqeup/id1/iVHmJ2zGbFN/Zs2fdzvBP6kZQxUD3cNvMjTHdgD0LFy6kU6dOEUwXHbNmzeLxxx/nvffeIyYmhptuuom77rqLe++9F4Dvfve77N27l1mzZuH3e+F3DBE539lTtZRvXkqoIJ+TR/Y6GwMxpAy4mmB2DvFXdXMznmfs37+fyZMnwwU+81WgREQi6OzZs1Tv20SoMJ/K7asA5zM3oetAgtm5JPUa3qJnU2+oQHmtzRxrbQkXOFclItIU+Xw+ErsNIrHbIKdNvXAOZesXUr1vE9X7NhGT0Y5g1jRSB0/CH5/odlxP8VyBEhFprmIz2tH6+nvJvPrTlK5/h9LCOZwqPszxef/HiSUvkjZ0MmkjpxKbfpXbUT1BBUpEJMr8Ccmkj7qJYNY0KrcXEirMp7poC6GVswkV5JPUJ8uZTb1zvxbdpq4CJSLiEp8/QHLf0ST3HU3NoV2ECvMp37yMSruSSruSuHY96trUx+ELtLw2dbWAiYh4QHz7nrSd/jW6PPg06eNvxZ+UxsnDuzn65pMUPfllit97mdMVIbdjRpVGUCIiHhKTmkHmNXeQPvaWj9rUa48WUbzkBUree5mUgU6belzbrm5HjTgVKBERD/LHxpM2dAqpQyZTvXcjoYI8Kneupmz9QsrWLySx2yDSzrWp+5rnwTAVKBERD/P5fCR2H0xi98GcPH6Q0lVzKFu/iKq9G6nau5HYzPakZeWQOngi/rjm1aauAiUi0kTEtepA6xu+SMY1d1C2bgGlhXOoPXGI42//nuLFz5M6bIrTph5s63bURqECJSLSxAQSkkkffTPB7FwqbAGhgtnU7LeEVrxJaGUeyX1HEczOJb6jadJt6ipQIiJNlM8fIKXfGFL6jaH64E5KC/Mp37KMiq3Lqdi6nPj2vQhm55Lcb3STbFNvnmfWmqiLLfk+YsQIli9f/tH2VatWMXbsWE6dOuVGTBHxoIQOvWh780N0eeC3pI/7JP7EVGoO7eTIG09Q9NRXKV72Cqcry9yOeUla5Ajq0IuPUbVrTVReK7HncNrf/v2w9r3Yku8TJ04kPz+fMWPGADB79mxycnKIiWmR/3wi0oCYtFZkTvwM6eM+SfmmdwkV5FF7bD/Fi5932tQHXUMwK4e4Np3djvqxNILykPpLvgMfLfk+ffp05s+fT21tLadOneLtt99m+vTpLqcVES/zx8aTNuw6Ot33BO3u+H8k9hzG2VMnKVs7n/3P/huHXniUyp1rOHs24ouYX7YW+St4uCOaaLvYku/dunUjMTGRZcuW4fP5yMjIYNCgQW7HFZEmwOfzkdRjCEk9hnDy2H5KC+dQtnExVbvXU7V7PbGtOhLMyiFl0DX44xLcjvtPWmSB8rKLLfmem5vL22+/jc/n0+hJRC5LXOtOtJ56HxkT76Bs7QJCq96i9vgBjs19lhN1berBkVOJSWvtdlRABcpz6i/5/qUvfemj7TfffDOf//znAXjxxRfdiicizUAgMZX0sTMIjrqJCruSUEEeNQe2E1r+OqEVb5Lcb4wzm3rHPq7mVIHyoBkzZvD4448zbdq0j7b17t2bNm3akJSUpFWDRaRR+AIxpPQfR0r/cVQf2E6oIM9pUd+yjIoty4jv0JvgqJtINqPwBaJfLlSgPOjOO+/kzjvv/Jft7dq1Y9KkSS4kEpHmLqFjHxJmfINTk48TWjWHsrULqDm4gyOv/YJAaiuCI6eSOmwKgcTUqGVSgWoCDh48yNatW1mzZg0/+9nP3I4jIs1YTForWk26i4zxn6J84xJChfnUHj/AiUV/pXjpS6QMnui0qbeO/JEcFagm4M9//jOvvPIKjzzyCCkpKW7HEZEWwB+XQNqIG0gdfh1Vu9cTKsijavc6ytbMo2zNPBJ7DCM4KpfE7kMiNp2S7+zZsxF54ktljBkL/C/QDzgIfM9a+3KYj+0G7Fm4cKHOz4iIRMjJox84q/5uXMLZUycBSBk8kbY3zbzs59y/fz+TJ08G6G6t3Vv/Pk9cqGuMaQ/kA08BqcADwF+NMV1cDSYiIh+Ja9OZNtO+TJeZz5Ix8U5iMtrhi4mL2Ot55RDf54B3rbV/rrs93xiTDRS7mElERC4gkJRKxrhbyBh3S0RfJ2oFyhgTB2Re4K6zwAhgrzHmRWAK8AHw79baDdHKJyIi3hLNQ3xjgUMX+DqAU7i+BPwVaA88DrxmjOkZxXwiIuIhURtBWWsXAxds9TDG5ANzrbV5dZteMsbMBKbinJcSEZEWxhNNEsA2IOO8bV45PyYiIi7wShF4DnjQGPNZ4HngU8Bg4DZXU4mIiGs8MYKy1q4HpgH/BpQAPwBusdZ+4GowERFxjVdGUFhrFwIj3c4hIiLe4JkCdYUCAIcPH3Y7h4iIXIJ6n9uB8+9rLgWqPXDBGcBFRKRJaA/sqr+huRSoQmACznVVp13OIiIi4QvgFKfC8+/wzGSxIiIi9Xmii09EROR8KlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJKlAiIuJJzWUmibAYY4YAT+Ms5bEbuNda+y9XLxtjugB/AEYDR4CZ1to50cwaaZfwXowAflm3Xynwe+DH1tpmc4V3uO9Fvf1jgRXAbGvtD6MSMgou4WciFXgSmA6cBV4GHrTW1kYxbkRdwnthgN8Cw4Ey4Glr7WPRzBotxphsIM9a2/Yi9zf652aLGUEZY+KAN4C/AenAY8A8Y0zaBXZ/EdgAtMJZiv5FY0yPaGWNtHDfC2NMEpAPvITzXkwG7sF5T5qFS/y5OOcnwNAoxIuaS3wf/q9un25AP5xVCL4dnaSRd4nvxSxgAZAJTAK+ZoyZHq2s0WCM8RljvgjMA+Ia2LXRPzdbTIECJgKx1tonrLW11toXgc3Ap+vvZIzpg/Mf7v9Za09aa98B3gS+EO3AETSRMN4LoDOw3Fr7lLX2tLV2B/A6MD66cSNqIuG9FwAYYyYC1wFvRy1hdEwkvP8f7YGbgS9Za0uttUfqbs+KduAImkj4PxOm7k8fzmjyLFAdlZTR8yPgKzi/mF1QpD43W1KB6g9sPW/bNmDQBfYrstZWfMx+TVlY74V1zDh3u+43y6nA2ognjJ5wfy4wxmQAvwM+B5yMfLSoCvd9GAYUAXcaY3YbYz4AHgAORD5i1IT9MwH8GOcDvAbYATxvrZ0X2XhR97S1dgSwqoF9IvK52ZIKVApQed62SiDpMvdryi7572iMiQdeqNvv6chFi7pLeS+eBn5jrd0U8VTRF+77kIlzaG8gzvmZa3DORX0nwvmi6VJ+Js4C36x7zFDgFmNMczragrX2YBi7ReRzsyUVqAog8bxtSUD5Ze7XlF3S39EY0w54B2gLTLHWVkU2XlSF9V4YY+4BWgNPRCdW1IX7M1GDszzCN6215dba3cAvgFsiHzFqwv2ZGAl83Vr7K2tttbV2PfDfwFejE9NTIvK52ZIK1Bb+cbz4nL5128/fr4sxJvFj9mvKwn0vMMb0x1mnZSdOcSqOfLyoCve9uAPIBoqNMSVADvCwMSYv8hGjItz3YVvdn+n1tjW3buBw34vOQJwxxldv2ymg2XQzXoKIfG42tx+shiwCfMaYrwNPAZ/EOUTxWv2drLXWGLMeeMwY811gLM5J4DFRzhtJYb0Xdedc5gEvWmu/FfWU0RHuz8UN9W8bY14H1jWjNvNw34eNxphVwC+NMXfhjCq/jnNurrkI670AluGMJn9kjHkU6A58C/h1FLN6QqQ+N1vMCMpaexLnBP8ngRPA94FPWGuPGmPuNMbUH4p+Eqd99gjOdT9faE7nHS7hvbgL6Ah8xRhTXu/rBXeSN75L/Lloti7xfZiG06m2G+fE+Rs0o0Of4b4XdR2MU4FrgWM4v8z9EecasWYvGp+bWlFXREQ8qcWMoEREpGlRgRIREU9SgRIREU9SgRIREU9SgRIREU9SgRIREU9qSRfqijQqY8yfgLsb2OVHwGKcCz9TrbVRuabKGBPAuYj0c9ba7Q3s58dZ1+oua62NRjaRS6ERlMjlewhoX/c1sW5bdr1tPwfer/u+4gKPj5SvAesbKk4A1tozwKM0r8l/pRnRhboijcAYMxDYCHS31u51MUcCznIYk8K9it8Yswvnqv/Fkcwmcql0iE8kguoWOPzoEJ8x5izOxLPfxZmQdBXwWZwVae8CSoHvWmv/Uvf4VOB/gFtxlnZ4B3iogSUQbgdK6hcnY8wPgPuANjjrHH3PWvtWvce8hjMaXNwIf2WRRqNDfCLR91Pg34DRQBdgDU5hygJeBZ4xxqTU7fssTiG7AWftpbPA28aYi/1ymQPMPXfDGDOj7rU+izO7dD7w9/OWL58LTGngOUVcoQIlEn2/ttYustauA/Jw1sz5Xl2jwi9w1tXpbozpgTMi+oy1trBuVHQXzoKBN17kuUfiLE9+TjecNZz21R16fBRn7ab6S0JswVlwrm+j/O1EGol+YxKJvp31vq8E9lprz50Mrq77Mx7oWve9NeaflidKwhlVXWgtqqtwZtY+5684nYa7jTGrgTeBP5636OTxuj/bXuLfQySiNIISib7zF7Q7c5H9Yur2HYaznPi5rz44yzpcyBngowX0rLVHgRE4I673gXuADXVNHeec+xw4HfbfQCQKVKBEvGsrEAskW2t3Wmt3AoeAn+EUqQs5jNMMAYAx5hbgfmvtPGvtQzgjrzKcNZ3OaVPvsSKeoUN8Ih5Vt0rpm8BzxpgHgKPAYzjNFdsu8rDVwJB6twPAz4wxH+J0DI4G2tV9f84QoJh/PvQo4jqNoES87W6cYvI6UAgEgeustSUX2T8fp9sPAGvt34FHcEZd24GfAA9aa9+p95irgbnWWh3iE0/RhboizYgxJgnYC9xorV0Txv5+YB9Op+DSCMcTuSQaQYk0I9baSpzR0gNhPuRmYLeKk3iRCpRI8/NLYLA5rzf9fHWjp+8DX45KKpFLpEN8IiLiSRpBiYiIJ6lAiYiIJ6lAiYiIJ6lAiYiIJ6lAiYiIJ/1/+YmnfQUnh3IAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_velocity(V):\n",
    "    vx = V.extract('x')\n",
    "    vy = V.extract('y')\n",
    "    plot(vx, label='vx')\n",
    "    plot(vy, label='vy')\n",
    "\n",
    "    decorate(xlabel='Time (s)',\n",
    "             ylabel='Velocity (m/s)')\n",
    "    \n",
    "plot_velocity(results.V)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot(results.theta, label='theta', color='C2')\n",
    "\n",
    "decorate(xlabel='Time (s)',\n",
    "         ylabel='Angle (radian)')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deZgU1dXH8e+AgCguICAoQZToCWhURIxi3BBEMbjg8iqLcYlKxPU1iQJqxH2JiIkiqHGLC68RwQVFXMA1iRAjJBKPGDWiLG4o4AII8/5xa7BpeoYapqqnZvr3eZ5+6L51u/pMPUOfuVWn7i0rLy9HREQkaxrUdgAiIiKFKEGJiEgmKUGJiEgmKUGJiEgmbVDbARSbmTUBugHzgZW1HI6ISKlrCLQFprv7stwNJZegCMnppdoOQkRE1rAP8HJuQykmqPkA999/P23atKntWEREStqCBQsYMGAARN/NuUoxQa0EaNOmDe3atavtWEREJFjrkouKJEREJJOUoEREJJOUoEREJJOUoEREJJOUoEREJJOUoEREJJOUoEREJJOUoEREJJOUoEREJJOUoEREJJOUoEREJJOUoEREJJOUoERE6qBXX32Vo446it12242+ffsyefJkAHr06ME999xD79692XXXXbngggt47bXXOPTQQ+nSpQvnn38+K1eGeVm//PJLhg4dyt57781+++3HyJEj+e677wBYsWIFl112Gd26daNnz57cfvvtmNnqz3/ggQfo27cvXbt2Za+99uL6669P/GcsxdnMRURiufrFW/jH/H8V5bO6tN2JofsOidV3zpw5nH766Vx77bUcdNBBTJ8+nTPOOINWrVoB8PDDD/Pggw/yzTff0KdPH+bMmcM999zDsmXLOPLII3nhhRfo0aMHF1xwAY0bN+bpp5/m66+/5uyzz2bs2LEMGTKE0aNH88YbbzBp0iQaNmzIGWecsfrzX3/9dUaNGsWDDz5Ix44dmTVrFv3796d3797svPPOiR0TjaBEROqYSZMm8ZOf/IQ+ffqwwQYbsNdee9G3b18mTJgAwAknnECLFi3Yeuutad++PYcddhgtW7Zk6623Zvvtt+fDDz/k008/ZerUqVxyySU0a9aM1q1bM2TIEMaNGwfAY489xumnn07r1q3ZYostOOuss1Z/fqdOnZg4cSId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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot(results.omega, label='omega', color='C2')\n",
    "\n",
    "decorate(xlabel='Time (s)',\n",
    "         ylabel='Angular velocity (rad/s)')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Another way to visualize the results is to plot y versus x.  The result is the trajectory through the plane of motion."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_trajectory(P, **options):\n",
    "    x = P.extract('x')\n",
    "    y = P.extract('y')\n",
    "    plot(x, y, **options)\n",
    "    \n",
    "    decorate(xlabel='x position (m)',\n",
    "             ylabel='y position (m)')\n",
    "    \n",
    "plot_trajectory(results.P, label='trajectory')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Animation\n",
    "\n",
    "Animating this system is a little more complicated, if we want to show the shape and orientation of the axe.\n",
    "\n",
    "It is useful to construct a frame with $\\hat{r}$ along the handle of the axe and $\\hat{\\theta}$ perpendicular."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we're ready to animate the results.  The following figure shows the frame and the labeled points A, B, C, and D.\n",
    "\n",
    "![Diagram of the axe with reference frame](diagrams/throwingaxe2.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_frame(theta):\n",
    "    rhat = Vector(pol2cart(theta, 1))\n",
    "    that = rhat.perp()\n",
    "    return rhat, that"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "P, V, theta, omega = results.first_row()\n",
    "rhat, that = make_frame(theta)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\\[\\begin{pmatrix}-0.4161468365471424 & 0.9092974268256817\\end{pmatrix} dimensionless\\]"
      ],
      "text/latex": [
       "$\\begin{pmatrix}-0.4161468365471424 & 0.9092974268256817\\end{pmatrix}\\ dimensionless$"
      ],
      "text/plain": [
       "array([-0.41614684,  0.90929743]) <Unit('dimensionless')>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rhat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\\[\\begin{pmatrix}-0.9092974268256817 & -0.4161468365471424\\end{pmatrix} dimensionless\\]"
      ],
      "text/latex": [
       "$\\begin{pmatrix}-0.9092974268256817 & -0.4161468365471424\\end{pmatrix}\\ dimensionless$"
      ],
      "text/plain": [
       "array([-0.90929743, -0.41614684]) <Unit('dimensionless')>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "that"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "0.0 dimensionless"
      ],
      "text/latex": [
       "$0.0\\ dimensionless$"
      ],
      "text/plain": [
       "0.0 <Unit('dimensionless')>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.dot(rhat, that)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-0.9547622981669658,\n",
       " 0.04546487134128409,\n",
       " -0.48241904971578364,\n",
       " 0.9755696399943229)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "O = Vector(0, 0)\n",
    "plot_segment(O, rhat)\n",
    "plot_segment(O, that)\n",
    "plt.axis('equal')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "xs = results.P.extract('x')\n",
    "ys = results.P.extract('y')\n",
    "\n",
    "l1 = 0.6 * m\n",
    "l2 = 0.1 * m\n",
    "\n",
    "def draw_func(state, t):\n",
    "    plt.axis('equal')\n",
    "    set_xlim([0,8])\n",
    "    set_ylim([0,6])\n",
    "    \n",
    "    P, V, theta, omega = state\n",
    "    rhat, that = make_frame(theta)\n",
    "    \n",
    "    # plot the handle\n",
    "    A = P - l1 * rhat\n",
    "    B = P + l2 * rhat\n",
    "    plot_segment(A, B, color='red')\n",
    "\n",
    "    # plot the axe head\n",
    "    C = B + l2 * that\n",
    "    D = B - l2 * that\n",
    "    plot_segment(C, D, color='black', linewidth=10)\n",
    "\n",
    "    # plot the COG\n",
    "    x, y = P\n",
    "    plot(x, y, 'bo')\n",
    "\n",
    "    decorate(xlabel='x position (m)',\n",
    "             ylabel='y position (m)')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "During the animation, the parts of the axe seem to slide around relative to each other.  I think that's because the lines and circles get rounded off to the nearest pixel.\n",
    "\n",
    "Here's the final state of the axe at the point of impact (assuming the target is 8 m away)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>[0.0 meter, 2.0 meter]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>V</th>\n",
       "      <td>[8.0 meter / second, 4.0 meter / second]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>theta</th>\n",
       "      <td>2 radian</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>omega</th>\n",
       "      <td>-7.0 radian / second</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "P                          [0.0 meter, 2.0 meter]\n",
       "V        [8.0 meter / second, 4.0 meter / second]\n",
       "theta                                    2 radian\n",
       "omega                        -7.0 radian / second\n",
       "Name: 0.0, dtype: object"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "state = results.first_row()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "draw_func(state, 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "animate(results, draw_func)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Exercises\n",
    "\n",
    "**Exercise:**  Find the starting conditions that make the final height of the COG as close as possible to 1.5 m.  Ideally, the final angle should be a little past vertical."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
